音夢  —  D.C.I.F.~Da Capo~Innocent Finale featuring series
电子小说  PC 移植版
============================================================

这是什么
--------
原文件是一个 Android 平台的电子小说 APK —— CIRCUS 的
D.C.I.F.~Da Capo~Innocent Finale featuring series 衍生作品《保健医の音夢》。
这个文件夹把它搬到了 Windows 上，用浏览器当运行环境，并且已经带上了完整的中文翻译。

正文 374 行（日文约 6300 字 / 中文约 4700 字），58 个画面，
4 段 BGM、4 个音效、1 张 CG，全程约 10 分钟。


怎么运行
--------
双击   启动游戏.bat

它会自动开一个本地服务器并打开浏览器。没装 Python 的话会退化成直接打开网页，
一样能玩。也可以直接双击 index.html —— 不经过服务器也能跑。

默认显示中文。想读日文原文随时切（见下）。


操作
----
  鼠标左键 / 空格 / 回车     继续（文字正在逐字显示时按一下会立刻全显）
  按住 Ctrl                 快进
  鼠标右键 / Esc            唤出顶部菜单
  滚轮向上                  翻历史记录
  F 或 F11                  全屏
  Ctrl+S / Ctrl+L           快速存档 / 快速读档
  D                         显示画面尺寸和字体信息（排障用，再按一次关掉）
  菜单里的「◀ 列表」         回到作品列表（读到结尾时也有按钮）

顶部菜单里有：存档、读档、历史、切日文／切中文、设置、隐藏、回标题、全屏。
设置里能调 文字速度 / 文字大小 / BGM 音量 / 音效音量 / 显示语言 /
显示方式（原比例或铺满窗口）/ 画面缩放。这些设置存在浏览器里，下次打开还在。


中日文对照
----------
译文按中文自己的宽度重新排过版，不会跟着日文的折行位置断 ——
日文一行排满 24 个全角字，中文要短得多，若照抄日文的断点就会出现
"译完就断"的碎行。所以中文是把一整段拼起来重排、再放回原来的行槽里。

翻页位置（每次点击推进到哪里）与日文完全一致，切换语言不会跳屏。
想对照着读，随时按顶部菜单的「切日文」。

译文的源文件 tools\cn.txt 仍然是**逐行对应**日文原文的（各 374 行），
重排是 build.py 自动做的，改译文时不用管断行。


关于画面比例
------------
原版是 800x480（5:3）的横屏画面，PC 版保持这个比例等比放大、水平垂直居中。

注意：从 APK 里解出的原始素材是 1024x512，但右边 224px、下边 32px 是填充用的
空白（背景图填黑、CG 填白），真正有内容的区域只有左上角的 800x480。
本版已经把图裁到 800x480 再用，原图备份在 tools\original_assets\。

如果你的窗口比 5:3 更宽（超宽屏、或浏览器拉得很宽），画面按比例放到最大也占
不满宽度，两边会空出来；比 5:3 窄的话空出来的是上下。这些空出来的地方不会留
成生硬的黑边 —— 程序会拿当前背景图的模糊放大版去填，看起来像场景的延伸，
不突兀。标题画面同样处理。

想彻底铺满（不留一点空），在「设置 → 显示方式」里改成「拉伸铺满」，
代价是画面会被拉伸变形，人物会变胖变扁。

如果觉得画面整体偏小，可以在「设置 → 画面缩放」里调大（最多 200%）；
不过调太大时超出窗口的部分会被裁掉，别超过窗口能容纳的范围。

画面始终居中。如果发现它偏到一边，按一下 D 键，左下角会显示当前窗口尺寸、
缩放系数、画面实际尺寸和四周留白，把那个数字报过来就能定位问题。


关于字体
--------
中日文用的是两套字体栈，跟着当前显示语言自动切换。

原因是浏览器的字体回退是**逐字符**进行的：日文明朝体里没有简体字，
而中文宋体里的假名字形又是中文风格的。如果两套字体混在同一个声明里，
同一句话就会被拆成两种字体渲染，看起来像"字体混着两种"。
所以切到中文时只用中文字体栈，切到日文时只用日文字体栈，
而且栈尾统一用宋体兜底，保证整段文字始终落在同一个字族上。

按 D 键可以看到你机器上实际装了哪些中文字体，方便排查显示效果。


目录说明
--------
  index.html           阅读器本体（引擎 + 界面）
  script.js            剧本数据，由 tools/build.py 生成，别手改
  assets\              全部素材：背景、CG、BGM、音效、标题图
  tools\original_assets\ 裁切前的原始 PNG（1024x512），备份用
  tools\dcifnemu.txt   从 APK 里原样提取的原始日文剧本
  tools\cn.txt         中文译文，一行对一行
  tools\build.py       把剧本 + 译文重新生成成 script.js
  tools\test_engine.js 自测脚本
  tools\default.txt    原版的界面配置（meswin / strpos 等）


想改译文 / 改剧本
----------------
1. 改 tools\cn.txt（中文）或 tools\dcifnemu.txt（日文）。
   两个文件都要存成 UTF-8，不要存成 GBK。

2. 在项目目录下执行：
       python tools\build.py

   会重新生成 script.js，刷新浏览器即可看到效果。

3. 改完想自检：
       node tools\test_engine.js

   会跑一遍完整流程，检查有没有崩、翻译有没有漏行、存档读档是否正常。
   （需要装 Node.js；没有也不影响玩游戏。）

注意两个文件的正文行数必须对得上 —— 各 374 行，一一对应。
行数对不上时 build.py 会提示并忽略汉化。

排版上每行最多约 26 个全角字，写译文时按这个宽度断行，显示才齐整。


已知与原版的差异
----------------
- 原版画面是 800x480，PC 版按比例放大显示，画面比例一致，不会变形。
- 原版 Android 的排版参数（字号、行距）没有留在 APK 里，PC 版是按 800x480
  画布重排的（字号 28、左边距 16、上边距 32 —— 后两个与原版 default.txt 里的
  strpos 一致）。中／日两版都已核对 58 个画面全部放得下。
  如果觉得字大或字小，在「设置 → 文字大小」里直接调。
- 原版有重力感应等手机专属设置，PC 版没有。
- 存档用浏览器本地存储，只有一个档位（原版多档）。换浏览器或清缓存会丢。


源 APK
------
  C:\Users\Lenovo\Downloads\base.apk
